using System;
using System.Windows.Forms;
using App.Controlador.Seguridad;
using App.Modelo;

namespace App.Git.Vista
{
    public partial class CrearLineaReparacion : Form
    {
        public LineaReparacion LineaReparacion 
        {
            get
            {
                return lineaReparacionBindingSource.DataSource is LineaReparacion
                    ? (LineaReparacion)lineaReparacionBindingSource.DataSource
                    : null;
            }
            set
            {
                lineaReparacionBindingSource.DataSource = value;
            }
        }

        public CrearLineaReparacion()
        {
            Registry.Instance.RegisterForm(this);
            InitializeComponent();
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            aceptar();
        }

        public void aceptar(){
            Validate();

            if (LineaReparacion.Pieza == null)
            {
                MessageBox.Show("La liena debe tener un elemnto");
                comboBox1.Focus();
                return;
            }
            
            int cant;

            if (!int.TryParse(maskedTextBox1.Text, out cant) || cant <= 0)
            {
                MessageBox.Show("La cantidad no es valida");
                maskedTextBox1.Focus();
                return;
            }

            DialogResult = DialogResult.OK;
            Hide();
        }

        public LineaReparacion GetNewLineaReparacion(Equipo Equipo)
        {
            return GetNewLineaReparacion(Equipo, new LineaReparacion());
        }

        public LineaReparacion GetNewLineaReparacion(Equipo Equipo, LineaReparacion linea)
        {
            piezaBindingSource.DataSource = Registry.Instance.Controlador.Piezas.Buscar(Equipo);

            if(linea.Pieza == null)
                comboBox1.SelectedIndex = -1;

            LineaReparacion = linea;

            ShowDialog();

            return DialogResult == DialogResult.OK ? LineaReparacion : null;
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            lineaReparacionBindingSource.ResetCurrentItem();
            DialogResult = DialogResult.Cancel;
            Hide();
        }

        private void comboBox1_Enter(object sender, EventArgs e)
        {
            if (sender is Control)
            {
                ((Control)sender).Select();
            }
        }

        private void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                aceptar();
        }
    }

}